
#include <stdio.h>

//给出n(n<=20),输出杨辉三角前n行     Pascal's triangle

#define MAX_ROWS 20

void printPascalTriangle(int numRows) 
{
    int triangle[MAX_ROWS][MAX_ROWS] = {0};
    triangle[0][0] = 1; // 初始化第一行第一个元素为1
    for (int i = 1; i < numRows; i++) {
        triangle[i][0] = 1; // 每一行的第一个元素始终是1
        triangle[i][i] = 1; // 每一行的最后一个元素也是1
        for (int j = 1; j < i; j++) {
            triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j]; // 中间元素是上一行对应元素之和
        }
    }
    for (int i = 0; i < numRows; i++)
     {
        for (int k=0;k<numRows-i-1;k++)
        {
            printf ("  ");
        }
        for (int j = 0; j <= i; j++) 
        {
            printf("%2d  ", triangle[i][j]);
        }
        printf("\n");
    }
}

int main() 
{
    int numRows;
    printf("请输入杨辉三角的行数(不超过%d):", MAX_ROWS);
    scanf("%d", &numRows);
    if (numRows > 0 && numRows <= MAX_ROWS) 
    {
        printPascalTriangle(numRows);
    } 
    else 
    {
        printf("行数超出范围！\n");
    }
    return 0;
}